import Vue from "vue";
import Vuex from "vuex";
import createPersistedState from "vuex-persistedstate";

Vue.use(Vuex);

export default new Vuex.Store({
  plugins: [createPersistedState()],
  state: {
    goods: [], // 添加到购物车中的商品信息
  },
  mutations: {
    // 添加mutations
    ADD_CART(state, payload) {
      state.goods.push(payload);
    },
    // 一个商添加两次以上，只需修改商品数量
    UPDATE_CART(state, payload) {
      state.goods = payload;
    },
  },
  getters: {},
  actions: {
    // 所有的判断是否是第一次添加和调用 mutations 都放在动作里
    ADD_CART_AC(context, item) {
      // 1.将购物车的数据拷贝一份到动作的本地变量中
      let newArr = [...this.state.goods];
      console.log(item);
      // 2.判断是否是第一次添加
      // findIndex 如果在数组中找到该条记录会返回数组下标，如果没找到会返回 -1
      let index = newArr.findIndex((val) => val.item_id === item.item_id);
      if (index === -1) {
        // 这个商品第一次添加购物车
        // 调用 添加mutations
        context.commit("ADD_CART", item);
      } else {
        console.log(111);
        newArr[index].num++;
        //调用 第二次以上添加购物车
        context.commit("UPDATE_CART", newArr);
      }
    },
  },
  modules: {},
});
